SPB Git

spb/llmindex Public

The discriminative, contamination-resistant, fully transparent LLM ranking — updated live.

TypeScript 77.9% TeX 15.2% Python 3.7% SQL 1.4% JavaScript 1.1% Shell 0.5%
1.9 KB · 61 lines tsx
Raw Blame History
1/**2 * llmindex.io — per-domain leaderboard with sub-metrics (live-updating)3 * Author:  Simon-Pierre Boucher4 * Contact: contact@spboucher.ai5 * License: Proprietary — © Simon-Pierre Boucher, all rights reserved6 */7import Link from 'next/link';8import { notFound } from 'next/navigation';9import { DOMAINS, INDEX_VERSION, isDomain } from '@llmindex/scoring';10import { LiveLeaderboard, type ApiEntry, type ApiRun } from '@/components/LiveLeaderboard';11import { getLeaderboard } from '@/lib/data';1213export const revalidate = 300;1415export function generateStaticParams() {16  return DOMAINS.map((domain) => ({ domain }));17}1819export default async function DomainLeaderboardPage({ params }: { params: { domain: string } }) {20  if (!isDomain(params.domain)) notFound();21  const data = await getLeaderboard(params.domain);22  const title = params.domain.replaceAll('_', ' ');2324  const initialRun: ApiRun | null = data25    ? {26        id: data.run.id,27        kind: data.run.kind,28        status: data.run.status,29        created_at: new Date(data.run.createdAt).toISOString(),30        notes: data.run.notes,31      }32    : null;33  const initialEntries: ApiEntry[] = (data?.entries ?? []).map((e) => ({34    rank: e.rank,35    model: e.slug,36    name: e.name,37    provider: e.provider,38    score: e.score,39    score_low: e.scoreLow,40    score_high: e.scoreHigh,41    sub_metrics: e.subMetrics,42  }));4344  return (45    <div className="space-y-6">46      <div className="flex flex-wrap items-center gap-3">47        <Link href="/" className="text-sm text-zinc-500 hover:text-zinc-900">48          ← Global49        </Link>50        <h1 className="text-xl font-bold capitalize text-zinc-900 sm:text-2xl">{title}</h1>51      </div>52      <LiveLeaderboard53        domain={params.domain}54        initialRun={initialRun}55        initialEntries={initialEntries}56        indexVersion={data?.run.indexVersion ?? INDEX_VERSION}57      />58    </div>59  );60}61